#include "main.h"
#include "stdio.h"
#include "tb6612.h"

#define ARM_HEAD_LOCK_PERIOD 100

TB6612::TB6612(TIM_HandleTypeDef *_p_tim, int *_p_run_period )
{
	p_tim = _p_tim;
	p_run_period = _p_run_period ;
	// A_IN_1 = PC8
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,   GPIO_PIN_RESET);

	// A_IN_2 = PC9
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);



}

void TB6612::lock()
{
	HAL_TIM_PWM_Stop_IT(p_tim, TIM_CHANNEL_1);
	p_run_period = 0 ;
	//(0, 1)
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,   GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,   GPIO_PIN_SET);

	// 发送PWM信号
	HAL_TIM_PWM_Start_IT(p_tim, TIM_CHANNEL_1);


}

void TB6612::stop()
{
	HAL_TIM_PWM_Stop_IT(p_tim, TIM_CHANNEL_1);
	p_run_period = 0 ;
	//(0, 0)
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,   GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,   GPIO_PIN_RESET);


}

void TB6612::unlock()
{
	HAL_TIM_PWM_Stop_IT(p_tim, TIM_CHANNEL_1);
	p_run_period = 0 ;

	//(1, 0)
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);

	// 发送PWM信号
	HAL_TIM_PWM_Start_IT(p_tim, TIM_CHANNEL_1);



}

